package com.ju.demo.service.impl;

import com.ju.demo.service.ImageService;
import org.apache.tomcat.util.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@Service
public class ImageServiceImpl implements ImageService {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 将图片文件 经 base64 转码，并返回对应的编码字符串
     * @param imageFile 图片文件
     * @return 编码字符串
     */
    @Override
    public String saveImage(MultipartFile imageFile) {
        // 检查上传的文件是否为空
        if (imageFile.isEmpty()) {
            throw new IllegalArgumentException("上传的文件不能为空");
        }

        // 将MultipartFile转换为字节数组
        byte[] imageBytes = new byte[0];

        try {
            imageBytes = imageFile.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 进行Base64编码
        String base64Image = Base64.encodeBase64String(imageBytes);

        // 返回编码
        return base64Image;

    }


    public String generateUniqueFileName() {
        // 实现根据需要的逻辑生成唯一的文件名
        // ...结合时间戳和随机数生成一个具有足够独特性的字符串,作为文件名

        // 获取当前时间
        LocalDateTime currentTime = LocalDateTime.now();

        // 格式化时间，生成时间戳字符串
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
        String timestamp = currentTime.format(formatter);

        // 生成UUID作为随机部分
        String randomPart = UUID.randomUUID().toString().replaceAll("-", "");

        // 组合时间戳和随机部分，作为文件名
        String uniqueFileName = timestamp + "_" + randomPart;

        return uniqueFileName;

    }

}
